home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO018.dsk / STARTUP.bas < prev    next >
BASIC Source File  |  2012-02-16  |  5KB  |  117 lines

  1. 100  REM  Concur STARTUP program, Version 1.07 of Aug 1986.
  2. 110  REM  by Keith Falkner, Management Information Services.
  3. 120 :
  4. 130  REM Miscellaneous initialization
  5. 140  POKE 216,0: REM  Don't trap errors.
  6. 150  POKE 49162,0: REM Engage 80-column support in case we want it.
  7. 160  PRINT  CHR$(21): REM Show 40-column screen for now.
  8. 170  TEXT : HOME : NORMAL : SPEED= 255: REM Clear the screen.
  9. 180  LOMEM: 24576: REM Share memory with Machine-language program.
  10. 190  CLEAR :P% = 0:P$ = "": REM Define these two variables first!
  11. 200  READ I$: IF I$ < >"*"  THEN  PRINT I$: GOTO 200
  12. 210 ML = 24576 -208: REM Machine-language program goes here
  13. 220  FOR I = ML TO ML +207: READ X: POKE I,X: NEXT 
  14. 230 VE$ = "1.07"
  15. 240  DIM P$(200)
  16. 250 D$ =  CHR$(4):ZM = 0
  17. 260  REM Find the drive(s)
  18. 270  FOR DS = 7 TO 1  STEP  -1:Z = 49152 +DS *256
  19. 280  IF  PEEK(Z +1) = 32  AND  PEEK(Z +3) = 0  AND  PEEK(Z +5) = 3 GOTO 310
  20. 290  NEXT : PRINT "NO DISK???": STOP !
  21. 300  REM Choose a disk in drive 1 or drive 2:
  22. 310  PRINT : ONERR  GOTO 330
  23. 320  PRINT D$"PREFIX,S"DS",D1": PRINT D$"PREFIX": INPUT P1$: GOTO 340
  24. 330  CALL  -3288:P1$ = ""
  25. 340  ONERR  GOTO 360
  26. 350  PRINT D$"PREFIX,S"DS",D2": PRINT D$"PREFIX": INPUT P2$: GOTO 370
  27. 360  CALL  -3288:P2$ = ""
  28. 370  POKE 216,0: IF P1$ >""  OR P2$ >"" GOTO 400
  29. 380  VTAB 24: PRINT "READY A DISK AND PRESS THE SPACE BAR. ";
  30. 390  POKE 49168,0: GET Z$: PRINT : RUN 
  31. 400  IF P1$ = ""  THEN V$ = P2$: GOTO 440
  32. 410 V$ = P1$: IF P2$ = "" GOTO 440
  33. 420  IF P1$ = VR$  THEN V$ = P2$: GOTO 440
  34. 430  PRINT D$"PREFIX"V$
  35. 440  PRINT D$"OPEN"V$",TDIR": PRINT D$"READ"V$
  36. 450  INPUT Z$,Z$,Z$:P = 0
  37. 460  INPUT Z$: IF Z$ = "" GOTO 510
  38. 470  FOR I = 3 TO 16: IF  MID$ (Z$,I,1) >" "  THEN  NEXT 
  39. 480 F$ =  MID$ (Z$,2,I -2):T$ =  MID$ (Z$,18,3)
  40. 490  IF ZM = 0  THEN  IF F$ = "MENU"  AND T$ = "TXT"  THEN ZM = 1: GOTO 510
  41. 500 P$(P) = F$:P = P +1: GOTO 460
  42. 510  PRINT D$"CLOSE"V$: IF ZM <1 GOTO 580
  43. 520  PRINT D$"BLOAD MENU,TTXT,A8192"
  44. 530  CALL ML
  45. 540  IF P% = 0  THEN ZM =  -1: GOTO 440
  46. 550 P = P%: FOR I = 0 TO P -1
  47. 560 P% = I +1: CALL ML +3
  48. 570 P$(I) =  LEFT$(P$,15): NEXT 
  49. 580 P$(P) = "PRINT CATALOG":P = P +1:P$(P) = "ANOTHER DISK"
  50. 590 C = 0
  51. 600  TEXT : HOME : INVERSE 
  52. 610  PRINT "PROGRAM MENU FOR "V$ TAB( 41 - LEN(VE$))VE$
  53. 620  FOR I = 2 TO 11: VTAB I: PRINT " ";: HTAB  PEEK(33): PRINT " ": NEXT : VTAB 12
  54. 630  PRINT "SELECT WITH ARROWS. PRESS RETURN TO RUN.": NORMAL 
  55. 640  POKE 32,1: POKE 33,38: POKE 34,2: POKE 35,10: HOME : TEXT : VTAB 3
  56. 650 PL =  INT(C/16) *16
  57. 660  FOR I = PL TO PL +7:J = I +8
  58. 670  IF I < = P  THEN  HTAB 6: PRINT P$(I);
  59. 680  IF J < = P  THEN  HTAB 24: PRINT P$(J);
  60. 690  PRINT : NEXT 
  61. 700  IF C <PL  OR C >PL +15 GOTO 640
  62. 710 CV = C -PL +3:CH = 6
  63. 720  IF CV >10  THEN CV = CV -8:CH = 24
  64. 730  TEXT : VTAB CV: HTAB CH: INVERSE : PRINT P$(C): NORMAL 
  65. 740  POKE 34,13: HOME : IF ZM = 1  AND C <P -1  THEN P% = C +1: CALL ML +6
  66. 750  IF C = P -1  THEN  PRINT "Ready your printer, then press RETURN."
  67. 760  IF C = P  THEN  PRINT "Put any other disk in either drive."
  68. 770  POKE 49168,0: VTAB 12: HTAB 20: GET K$
  69. 780  IF K$ =  CHR$(3)  OR K$ =  CHR$(27)  THEN  TEXT : HOME : END 
  70. 790  IF K$ =  CHR$(13)  AND  RIGHT$(P$(C),1) >" " GOTO 980
  71. 800  TEXT : VTAB CV: HTAB CH: PRINT P$(C)
  72. 810  IF K$ = " "  THEN C = C +1
  73. 820  IF K$ =  >"a"  AND K$ < = "z" GOTO 920
  74. 830  IF K$ =  >"A"  AND K$ < = "Z" GOTO 930
  75. 840 K =  ASC(K$ +" ")
  76. 850 C = C -8 *(K = 8) +8 *(K = 21) +(K = 10) -(K = 11) + VAL(K$)
  77. 860  IF K$ = "/"  THEN C =  INT(C/2)
  78. 870  IF K$ = "-"  THEN C = C -1
  79. 880  IF K$ = "0"  THEN C = 0
  80. 890  IF C <0  THEN C = 0
  81. 900  IF C >P  THEN C = 0
  82. 910  GOTO 700
  83. 920 K$ =  CHR$( ASC(K$) -32)
  84. 930 Z = C
  85. 940 Z = Z +1: IF Z >P  THEN Z = 0
  86. 950  IF Z = C  THEN C = C +1: GOTO 890
  87. 960  IF K$ < > LEFT$(P$(Z),1) GOTO 940
  88. 970 C = Z: GOTO 890
  89. 980  TEXT : HOME : VTAB 10: PRINT 
  90. 990  PRINT  SPC( 20 -.5 * LEN(P$(C)))P$(C)
  91. 1000  IF C = P  THEN VR$ = V$: GOTO 250
  92. 1010  IF C = P -1 GOTO 1050
  93. 1020  ONERR  GOTO 1040
  94. 1030  PRINT D$"-"P$(C): END 
  95. 1040  RUN 
  96. 1050  ONERR  GOTO 1070
  97. 1060  PRINT D$"PR#1": PRINT D$"CATALOG": PRINT D$"PR#0
  98. 1070  POKE 216,0: GOTO 590
  99. 1080  DATA "         L  O  G  I  C",
  100. 1090  DATA "The Startup Menu is being prepared.",
  101. 1100  DATA "To select a program, press:",
  102. 1110  DATA "space bar - next item on the menu"
  103. 1120  DATA "arrow key - move left, right, down, up"
  104. 1130  DATA "a letter  - item starting with that"
  105. 1140  DATA "a number  - go forward that many items"
  106. 1150  DATA "0 (zero)  - go to the start of the menu"
  107. 1160  DATA ,"ESC key   - quit and exit to BASIC"
  108. 1170  DATA ,"RETURN    - run the selected program."
  109. 1180  DATA ,,"To use another disk, select the menu"
  110. 1190  DATA "item ANOTHER DISK, then insert the new"
  111. 1200  DATA "disk in any drive and press RETURN."
  112. 1210  DATA *
  113. 1220  REM DATA FOR ML ROUTINE.
  114. 1230  DATA 24,144,6,24,144,44,24,144,102,169,0,160,2,145,105,200,145,105,162,0,189,0,32,201,13,208,1,96,24,177,105,10,10,113,105,10,145,105,189,0,32,41,15,113,105,145,105,232,208,226,160,3
  115. 1240  DATA 177,105,10,170,202,16,1,96,169,0,133,6,169,32,133,7,160,0,177,6,230,6,208,2,230,7,201,13,208,244,202,208,241,160,10,165,6,145,105,200,165,7,145,105,160,255,200,177,6,201,13,208
  116. 1250  DATA 249,152,160,9,145,105,96,160,3,177,105,10,170,208,1,96,169,0,133,6,169,32,133,7,160,0,177,6,230,6,208,2,230,7,201,13,208,244,202,208,241,56,165,33,229,36,168,136,48,12,177,6
  117. 1260  DATA 201,32,240,11,201,13,208,243,240,5,169,141,32,240,253,160,0,177,6,9,128,201,141,240,19,201,160,208,4,196,36,240,3,32,240,253,230,6,208,205,230,7,16,201,76,240,253,0,0,0,0,0